package ar.com.binarit.entities

import ar.com.binarit.Person

class CuentaBancaria {

	Banco banco
	String cbu
	String motivo
	TipoDocumento tipoDocumento
	String documento

	static belongsTo = [usuario:Person]
	
	
	static constraints = {
		banco(nullable: false)
		cbu(nullable: false)
		motivo(nullable: false)
		tipoDocumento(nullable: false)
		documento(nullable: false, size:1..50)
		usuario(nullable:true)
	}

	String toString(){
		"CBU: ${cbu}"
	}
	
	public boolean equals(Object o) {
		try {
			CuentaBancaria otro = (CuentaBancaria) o
			return otro.cbu.equals(cbu)
		} catch (ClassCastException e) {
			return false
		}
	}

	public int hashCode() {
		return id.hashCode()
	}
	
	public validar(){
		if (!this.banco || this.banco.equals("")){
			this.errors.rejectValue("banco", 'default.blank.banco')
		}
		
		if (!this.cbu || this.cbu.equals("")){
			this.errors.rejectValue("cbu", 'default.blank.cbu')
		}else{
			if (this.cbu.size() < 10 || this.cbu.size() > 50) {
				this.errors.reject ("El cbu debe medir entre 10 y 250 caracteres")
			}
		}

		if (!this.motivo || this.motivo.equals("")){
			this.errors.rejectValue("motivo", 'default.blank.motivo')
		}else{
			if (this.motivo.size() < 10 || this.motivo.size() > 250) {
				this.errors.reject ("El motivo debe medir entre 10 y 250 caracteres")
			}
		}
		
		if (!this.documento || this.documento.equals("")){
			this.errors.rejectValue("documento", 'default.blank.documento')
		}else{
			if (this.documento.size() < 10 || this.documento.size() > 50) {
				this.errors.reject ("El documento debe medir entre 10 y 250 caracteres")
			}
		}
		
		

		return this.errors.errorCount == 0
	}
}